import { request } from './axiosInstance'

/**
 * 用户API服务
 */
export const userApi = {
  /**
   * 用户登录
   * @param {Object} loginData - 登录数据
   * @param {string} loginData.username - 用户名
   * @param {string} loginData.password - 密码
   * @returns {Promise} 登录结果
   */
  login(loginData) {
    return request.post('/users/login', loginData)
  },

  /**
   * 获取当前用户信息
   * @returns {Promise} 用户信息
   */
  getCurrentUser() {
    return request.get('/users/profile')
  },

  /**
   * 修改密码
   * @param {Object} passwordData - 密码数据
   * @param {string} passwordData.oldPassword - 旧密码
   * @param {string} passwordData.newPassword - 新密码
   * @param {string} passwordData.confirmPassword - 确认密码
   * @returns {Promise} 修改结果
   */
  changePassword(passwordData) {
    return request.put('/users/change-password', passwordData)
  },

  /**
   * 获取用户列表（管理员功能）
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.limit - 每页数量
   * @param {string} params.role - 角色筛选
   * @param {string} params.department - 部门筛选
   * @param {string} params.search - 搜索关键词
   * @returns {Promise} 用户列表
   */
  fetchUsers(params = {}) {
    return request.get('/users', { params })
  },

  /**
   * 根据ID获取用户信息（管理员功能）
   * @param {number} id - 用户ID
   * @returns {Promise} 用户信息
   */
  fetchUserById(id) {
    return request.get(`/users/${id}`)
  },

  /**
   * 创建新用户（管理员功能）
   * @param {Object} userData - 用户数据
   * @param {string} userData.username - 用户名
   * @param {string} userData.password - 密码
   * @param {string} userData.email - 邮箱
   * @param {string} userData.fullName - 姓名
   * @param {string} userData.role - 角色
   * @param {string} userData.phone - 手机号
   * @param {string} userData.department - 部门
   * @returns {Promise} 创建结果
   */
  createUser(userData) {
    return request.post('/users', userData)
  },

  /**
   * 更新用户信息（管理员功能）
   * @param {number} id - 用户ID
   * @param {Object} userData - 更新数据
   * @returns {Promise} 更新结果
   */
  updateUser(id, userData) {
    return request.put(`/users/${id}`, userData)
  },

  /**
   * 删除用户（管理员功能）
   * @param {number} id - 用户ID
   * @returns {Promise} 删除结果
   */
  deleteUser(id) {
    return request.delete(`/users/${id}`)
  }
}

export default userApi